package cadastro;

import interfaces.IRepositorioReclamacao;

import java.util.List;

import modelos.Linha;
import modelos.Reclamacao;
import modelos.Usuario;
import repositorios.RepositorioReclamacao;
import fachada.Fachada;


public class CadastroReclamacao {

    private IRepositorioReclamacao rep;
    
    public CadastroReclamacao(IRepositorioReclamacao rep){
    	this.rep = rep;
    }
    
    public void adicionarReclamacao(Reclamacao r){
        rep.adicionarReclamacao(r);
    }
    
    public void editarReclamacao(Reclamacao r){
        rep.editarReclamacao(r);
    }
    
    public List<Reclamacao> listarReclamacao(){
    	 List<Reclamacao> retorno = rep.listarReclamacao();
         return montar(retorno);
    }
    
    public void removerReclamacao(Reclamacao r){
        rep.removerReclamacao(r);
    }

	public List<Reclamacao> buscarDescricaoLinha(String descricao) {
		List<Reclamacao> retorno = rep.buscarDescricaoLinha(descricao);
		return montar(retorno);
	}
	
	public List<Reclamacao> buscarDescricao(String descricao){
		List<Reclamacao> retorno = rep.buscaLike("descricao", descricao);
		return montar(retorno);
	}
	
	public List<Reclamacao> buscarData(String data){
		List<Reclamacao> retorno = rep.buscaLike("data", data);
		return montar(retorno);
	}
	
	private List<Reclamacao> montar(List<Reclamacao> retorno){
    	 Linha l;
    	 Usuario c;
         Fachada f = Fachada.getInstancia();
         for(Reclamacao r : retorno){
        	 Long idUsuario = r.getUsuario().getId(); 
        	 Long idLinha = r.getLinha().getId();
        	 c = f.cadastroUsuario().buscarUsuarioPorId(idUsuario);
        	 l = f.cadastroLinha().buscarLinhaPorId(idLinha);
        	 r.setUsuario(c);
        	 r.setLinha(l);
         }
         return retorno;
    }
}

